Splines, such as b-splines, are a common tool for modeling non-linear data. There are three parameters that are chosen to fit b-spline models: (1) a number of knots, (2) a location of each knot, and (3) a degree of a polynomial used to fit the data. Iteratively selecting combinations of these parameters requires significant computer resources particularly given that the number of locations that can be evaluated for each knot can be large.